home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / sml_nj / 93src.lha / src / i386 / i386coder.sig < prev    next >
Encoding:
Text File  |  1993-01-27  |  2.9 KB  |  125 lines

  1. (* i386coder.sig
  2.  * by Yngvi Guttesen (ysg@id.dth.dk) and Mark Leone (mleone@cs.cmu.edu)
  3.  *
  4.  * Copyright 1989 by      Department of Computer Science, 
  5.  *              The Technical University of Denmak
  6.  *              DK-2800 Lyngby 
  7.  *)
  8.  
  9. signature I386CODER = sig
  10.  
  11. eqtype Label
  12. val newlabel : unit -> Label
  13.  
  14. datatype Size = Byte | Word | Long
  15.  
  16. datatype EA = Direct of int
  17.         | Displace of int * int
  18.         | Index of int * int * int * Size
  19.         | Immedlab of Label
  20.         | Immed of int
  21.         | Floatreg of int
  22.  
  23. (*************** The 80386 registers ****************************)
  24.  
  25. val eax : int
  26. val ebx : int
  27. val ecx : int
  28. val edx : int
  29. val esi : int
  30. val edi : int
  31. val ebp : int
  32. val esp : int
  33.  
  34. (**************** Misc. functions *******************************)
  35.  
  36. val comment    : string -> unit
  37. val finish     : unit    -> string
  38. val align      : unit    -> unit
  39. val mark       : unit    -> unit
  40. val define     : Label    -> unit
  41.  
  42. (***************** Emitters *************************************)
  43.  
  44. val emitstring : string -> unit
  45. val realconst : string -> unit
  46. val emitlong : int -> unit
  47. val emitlab : int * Label -> unit
  48.  
  49. (***************** Memory functions *****************************)
  50.  
  51. val movl  : EA * EA -> unit
  52. val movb  : EA * EA -> unit
  53. val movzx : EA * EA -> unit
  54. val stos  : EA        -> unit
  55. val lea      : EA * EA -> unit
  56. val push  : EA        -> unit
  57. val pop      : EA        -> unit
  58. val xchg  : EA * EA -> unit
  59.  
  60. (***************** Logical functions ****************************)
  61.  
  62. val orl     : EA * EA -> unit
  63. val notl : EA       -> unit
  64. val andl : EA * EA -> unit
  65. val xorl : EA * EA -> unit
  66. val btst : EA * EA -> unit
  67.  
  68. (**************** Arithmetic functions *************************)
  69.  
  70. val incl  : EA -> unit
  71. val decl  : EA -> unit
  72. val addl  : EA * EA -> unit
  73. (* val addl2 : EA * EA -> unit *)
  74. val subl  : EA * EA -> unit
  75. val negl  : EA        -> unit
  76. val cmpl  : EA * EA -> unit
  77. val asrl  : EA * EA -> unit
  78. val asll  : EA * EA -> unit
  79. val divl  : EA        -> unit
  80. val mull  : EA * EA -> unit
  81. val cdq      : unit    -> unit
  82.  
  83. (**************** Jumps ****************************************)
  84.  
  85. val jra : EA -> unit
  86. val jmp : EA -> unit
  87.  
  88. val jne : EA -> unit
  89. val jeq : EA -> unit
  90. val jgt : EA -> unit
  91. val jge : EA -> unit
  92. val jlt : EA -> unit
  93. val jle : EA -> unit
  94. val jb    : EA -> unit
  95. val jbe : EA -> unit
  96. val ja    : EA -> unit
  97. val jae : EA -> unit
  98. val jc    : EA -> unit
  99. val jnc : EA -> unit
  100.  
  101. (****************** Floating point functions **********************)
  102.  
  103. val fadd  : bool -> EA * EA -> unit
  104. val fsub  : bool -> EA * EA -> unit
  105. val fsubr : bool -> EA * EA -> unit
  106. val fmul  : bool -> EA * EA -> unit
  107. val fcom  : bool -> EA * EA -> unit
  108. val fdiv  : bool -> EA * EA -> unit
  109. val fdivr : bool -> EA * EA -> unit
  110. val fst      : bool -> EA -> unit
  111. val fld      : EA     -> unit
  112. val fild  : EA     -> unit
  113. val fchs  : unit -> unit
  114. val fabs  : unit -> unit
  115. val fstsw : unit -> unit
  116.  
  117. (***************** Misc. functions ********************************)
  118.  
  119. val sahf   : unit -> unit
  120. val into   : unit -> unit
  121.  
  122. end (* signature I386CODER *)
  123.  
  124.  
  125.